package fr.ajicommerce.managedBean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.faces.context.FacesContext;

import org.primefaces.context.RequestContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import fr.ajicommerce.FrontOffice;
// import fr.ajicommerce.core.dto.PhotoDTO;
import fr.ajicommerce.core.dto.ProduitDTO;
import fr.ajicommerce.core.service.facade.Facade;
import fr.ajicommerce.core.service.interfaces.ProduitService;


@Component("rechercheBean")
@Scope("viewCustom")
public class RechercheBean extends FrontOffice implements Serializable{
	


	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Autowired
	private Facade facade;

	private String stringRecherche;

	private List<ProduitDTO> listeProduitRecherche;
	
	private boolean premierPassage = true;
	
	
	public RechercheBean() {
		
	}
	
	public String ajouterPanier(ProduitDTO produit)
	{
		
		getPanier().ajouter(produit);
		
		return null;
	}
	

	
	
	public String recherche()
	{
		System.out.println("toto" + this);
		ProduitService service = facade.getProduitService();
		Set<ProduitDTO> listeSet = new HashSet<>();
		
		listeSet.addAll(service.findAllProduitsByThisReference(stringRecherche));
		listeSet.addAll(service.findAllProduitsByThisLabel(stringRecherche));
		
		listeProduitRecherche = new ArrayList<>(listeSet) ;		

		RequestContext.getCurrentInstance().update("formContent:rechercheProduits");
		if(premierPassage)
		{
			FacesContext context = FacesContext.getCurrentInstance();
			premierPassage = false;
			
			context.getExternalContext().getSessionMap().put("rechercheBean", this);
			return "/FrontOffice/rechercheProduit.xhtml";
		}
		else
			return null;
	}


	public Facade getFacade() {
		return facade;
	}


	public void setFacade(Facade facade) {
		this.facade = facade;
	}


	public String getStringRecherche() {
		return stringRecherche;
	}


	public void setStringRecherche(String stringRecherche) {
		this.stringRecherche = stringRecherche;
	}


	public List<ProduitDTO> getListeProduitRecherche() {
		return listeProduitRecherche;
	}


	public void setListeProduitRecherche(List<ProduitDTO> listeProduitRecherche) {
		this.listeProduitRecherche = listeProduitRecherche;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public  boolean isPremierPassage() {
		return premierPassage;
	}

	public  void setPremierPassage(boolean premierPassage) {
		this.premierPassage = premierPassage;
	}

	
	
}
